package com.briup.ch02;

/**
 * 数学计算工具类
 * 提供基本的数学运算功能
 *
 * @author 程序员小明
 * @version 1.0
 * @since 2024-01-01
 * @see java.lang.Math
 */
public class MathUtils {

    /**
     * 计算两个整数的最大公约数
     *
     * @param a 第一个整数，必须大于0
     * @param b 第二个整数，必须大于0
     * @return 两个整数的最大公约数
     * @throws IllegalArgumentException 如果参数小于等于0
     *
     * @example
     * {@code
     * int result = gcd(12, 18); // 返回6
     * }
     *
     * @see <a href="https://en.wikipedia.org/wiki/Euclidean_algorithm">欧几里得算法</a>
     */
    public static int gcd(int a, int b) throws IllegalArgumentException {
        if (a <= 0 || b <= 0) {
            throw new IllegalArgumentException("参数必须大于0");
        }
        // 计算最大公约数的逻辑
        while (b != 0) {
            int temp = b;
            b = a % b;
            a = temp;
        }
        return a;
    }

    /**
     * 旧的计算方法
     * @deprecated 从版本1.0开始废弃，请使用 {@link #gcd(int, int)}
     */
    @Deprecated
    public static int oldGcd(int a, int b) {
        // 旧实现
        return 0;
    }
}
